# ----------------------------------------------------
#  Configuration file for the setup.py script
#  Enjoy the number of options you can change here :)
# ----------------------------------------------------

# Name of the simulation
simName = "pluto"

# Directory for the simulation
# If set, setup.py will change to the directory at the beginning (it can be a relative path).
# If None, setup.py must be called from within the simulation directory.
simDir = "/xdisk/asphaug/adeened/config_p_s_y3_a45_v0_2_s3p"

# Directory in which prepared files for the simulations are stored
# This directory has the same structure as a simulation directory and can
# be generated by running setup.py with the --setup-only option
setupDir = "/xdisk/asphaug/adeened/config_p_s_y3_a55_v0_1_s3p"

# Directory in which the impactor only is prepared
# This directory has the same structure as a simulation direction, but with different file names.
# It can be generated by running setup.py with the "--setup-only impactor" option.
setupImpDir = None

# Directory in which the target only is prepared
# This directory has the same structure as a simulation direction, but with different file names.
# It can be generated by running setup.py with the "--setup-only target" option.
setupTarDir = None

# Units to use
# This is a 2D map of when => quantity => unit
# The possibilities of when are "setup", "plot", "report" and "default".
# Only default with all the quantities is mandatory.
# For the list of quantities and units, please refer to the definitions.py file
unitSystem = {
	"default": {
		"dist": "earth",
		"mass": "earth",
		"angmom": "earth-moon",
		"vel": "si",
		"time": "hour",
		"dens": "si",
		"pres": "si",
		"specener": "si",
		"specentr": "si",
		"temp": "kelvin",
	},
	"setup": {
		"dens": "cgs",
		"pres": "cgs",
		"specener": "cgs",
		"specentr": "raw",
	},
	"plot": {
		"dist": "kilometer",
	},
}

# Impactor initial profile
profileImp = {
	# 1D Profile creation
	# What variable is set here. Can have three possibilites:
	# - "mass": cells have equal mass; "total" key holds the total mass
	# - "mass-radius": cells have equal mass; "total" key holds the radius (mass will be computed using the density)
	# - "radius": cells have equal radius; "total" key holds the radius
	"type": "mass",
	# Total value according to the previous variable for this object
	"total": 0.00073,
	# Number of radial cells
	"cells": 100,
	# Ranges of the different items. Can be a list of either:
	# - numbers, representing mass fractions. The values must sum up to unity.
	# - range(), determining which cells to work on
	# - slice(), works the same way as for range()
	"range": [
		0.85,  # Silicate
		0.15  # Ice
	],
	# Variables to set to set in the profile (beside the one set in "type")
	# Each item set here must have the corresponding key defined in main dict
	# with the same number of items as in "range" and contain the associated value
	"keys": [ "mat", "rho", "S" ],
	# Material number
	"mat": [
		2, # Iron
		6  # Forsterite
	],
	# Instead of a numerical value, the followings can take the following values:
	# - "from-rt": value is computed using "root_RT" program (in sphlatch/tools/tillotson) from pressure ("p" key is needed in the big array, whether or not it is in "keys") and energy ("u" key)
	# - "from-pa", "from-pm", "from-pd": value is compued using "root_P*" program (in sphlatch/tools/aneos) from pressure ("p" key) and temperature ("T" key)
	# - "from-psa", "from-psm", "from-psd": value is compued using "root_PS*" program (in sphlatch/tools/aneos) from pressure ("p" key) and entropy ("S" key)
	# - "from-pua", "from-pum", "from-pud": value is compued using "root_PU*" program (in sphlatch/tools/aneos) from pressure ("p" key) and energy ("u" key)
	# Initial density
	"rho": [
		3.22, # Iron
		1.11  # Silicate
	],
	# Initial entropy
	"S": [
		9.0e10, # Iron
		4.0e10  # Silicate
	],

	# Parameters for 1D profile relaxation
	# Program to use
	# This should be one version of the sphlatch/initials/lagrange_sphere1D
	"exec-relax-1d": "lagrange_sphere1D_S",
	# Integration time for 1D profile
	"time-stop-relax-1d": 48.,
	# Friction time; should be << than integration time
	"time-fric": 1.5,

	# Parameters for 1D to 3D conversion
	# Program to create 3D body out of a profile and with a given number of particles.
	# This surpresedes the items "exec-body" and "exec-combine" below.
	# This should be the program in sphlatch/initials/relaxed_sphere
	"exec-sphere": "relaxed_sphere",
	# Program to create a spherical 3D SPH body
	"exec-body": "vanilla_sphere",
	# Number of SPH particles; None means to compute from the split in mainParams
	"particles": None,
	# Program to apply 1D profile onto bare 3D SPH body
	# This should be one version of the sphlatch/initials/flavour_sphere
	"exec-combine": "flavour_sphere_CS",
	# Which profile to apply on the bare 3D SPH body
	# - "initial": The initial (non-relaxed) one
	# - "final" (or anything else): The final (relaxed) one
	"combine-profile": "final",
	# Additional attributes to set on SPH body (optional)
	"attributes": {},
	# Additional variables to set on SPH body (optional)
	"variables": {},
	# Rotation period or None for no rotation
	"rotation-period": None,

	# Parameters for 3D SPH body relaxation
	# Program to the program to use;
	# This should one version of sphlatch/app that includes damping
	"exec-relax-3d": "sphlatch_GCIR__HSS_D",
	# Physical time for 3D SPH body relaxation
	"time-stop-relax-3d": 6.,
	# Number of slots to request when running the program
	"slots": None,
	# Actual number of threads to use in the program
	# None means to use the same as "slots"
	"threads": None,
	# Number of slots to use
	# Additional parameters to pass to "code" (optional)
	"parameters": [],
}

# Target initial profile
profileTar = {
	# 1D Profile creation
	# What variable is set here. Can have three possibilites:
	# - "mass": cells have equal mass; "total" key holds the total mass
	# - "mass-radius": cells have equal mass; "total" key holds the radius (mass will be computed using the density)
	# - "radius": cells have equal radius; "total" key holds the radius
	"type": "mass",
	# Total value according to the previous variable for this object
	"total": 0.0017,
	# Number of radial cells
	"cells": 100,
	# Ranges of the different items. Can be a list of either:
	# - numbers, representing mass fractions. The values must sum up to unity.
	# - range(), determining which cells to work on
	# - slice(), works the same way as for range()
	"range": [
		0.85,  # Silicate
		0.15  # Ice
	],
	# Variables to set to set in the profile (beside the one set in "type")
	# Each item set here must have the corresponding key defined in main dict
	# with the same number of items as in "range" and contain the associated value
	# value for each range
	"keys": [ "mat", "rho", "S" ],
	# Material number
	"mat": [
		2, # Dunite
		6  # Ice
	],
	# Instead of a numerical value, the followings can take the following values:
	# - "from-rt": value is computed using "root_RT" program (in sphlatch/tools/tillotson) from pressure ("p" key is needed in the big array, whether or not it is in "keys") and energy ("u" key)
	# - "from-pa", "from-pm", "from-pd": value is compued using "root_P*" program (in sphlatch/tools/aneos) from pressure ("p" key) and temperature ("T" key)
	# - "from-psa", "from-psm", "from-psd": value is compued using "root_PS*" program (in sphlatch/tools/aneos) from pressure ("p" key) and entropy ("S" key)
	# - "from-pua", "from-pum", "from-pud": value is compued using "root_PU*" program (in sphlatch/tools/aneos) from pressure ("p" key) and energy ("u" key)
	# Initial density
	"rho": [
		3.22, # Iron
		1.11  # Silicate
	],
	# Initial entropy
	"S": [
		9.0e10, # Iron
		4.0e10  # Silicate
	],

	# Parameters for 1D profile relaxation
	# Program to use
	# This should be one version of the sphlatch/initials/lagrange_sphere1D
	"exec-relax-1d": "lagrange_sphere1D_S",
	# Integration time for 1D profile
	"time-stop-relax-1d": 48.,
	# Friction time; should be << than integration time
	"time-fric": 1.5,

	# Parameters for 1D to 3D conversion
	# Program to create 3D body out of a profile and with a given number of particles.
	# This surpresedes the items "exec-body" and "exec-combine" below.
	# This should be the program in sphlatch/initials/relaxed_sphere
	"exec-sphere": "relaxed_sphere",
	# Program to create a spherical 3D SPH body
	"exec-body": "vanilla_sphere",
	# Number of SPH particles; None means to compute from the split in mainParams
	"particles": None,
	# Program to apply 1D profile onto bare 3D SPH body
	# This should be one version of the sphlatch/initials/flavour_sphere
	"exec-combine": "flavour_sphere_CS",
	# Which profile to apply on the bare 3D SPH body
	# - "initial": The initial (non-relaxed) one
	# - "final" (or anything else): The final (relaxed) one
	"combine-profile": "final",
	# Additional attributes to set on SPH body (optional)
	"attributes": {},
	# Additional variables to set on SPH body (optional)
	"variables": {},
	# Rotation period or None for no rotation
	"rotation-period": 3.,

	# Parameters for 3D SPH body relaxation
	# Program to the program to use
	# This should one version of sphlatch/app that includes damping
	"exec-relax-3d": "sphlatch_GCIR__HSS_D",
	# Physical time for 3D SPH body relaxation
	"time-stop-relax-3d": 6.,
	# Number of slots to request when running the program
	"slots": None,
	# Actual number of threads to use in the program
	# None means to use the same as "slots"
	"threads": None,
	# Number of slots to use
	# Additional parameters to pass to "code" (optional)
	"parameters": [],
}

# Parameters for combining impactor and target as well as starting the main program
mainParams = {
	# Particles split between objects
	# Total number of particles of the simulation
	"particles": 500000,
	# Method to split particles
	# - "mass": According to the relative mass of both objects
	# - "volume": According to the relaive volume of both objects
	"split": "volume",

	# Collision parameters
	# How to determine the impact velocity.
	# Can have three possibilites:
	# - "inf": vel-value is the relative velocity at infine distance
	# - "impact": vel-value is the relative velocity at impact
	# - "ratio": vel-value is the ratio between impact and escape velocities to add to case where there is
	#   no relative velocity at infinity (0 => v_imp/v_esc=1, 1 => v_imp/v_esc=2, etc.)
	"vel-type": "ratio",
	# Value for velocity ajustement (see vel-type for exact meaning)
	"vel-value": 0.2,
	# How to determine the impact geometry
	# Can have two possibilities:
	# - "angle": geom-value is the impact angle in degrees (0 = head-on, 90 = grazing)
	# - "para": geom-value is the impact parameter (0 = head-on, 1 = grazing, higher values are allowed)
	# - "angmom": geom-value is the angular momentum
	"geom-type": "angle",
	# Value for impact geometry (see geomType for exact meaning)
	"geom-value": 45,
	# Distance between the two objects at the beginning
	# in units of the sum of both objects' radius
	"rsep": 5.,
	# To what to align the primary axis
	# Can have three possibilities:
	# - "impact": initial impact location
	# - "orbit": the major axis of the orbit, in the opposite direction of the periapsis
	# - "inf": the position of the impactor at infinity, for a bound orbit, this
	#   is the same as "orbit"
	"align": "impact",
	# The direction of the primary axis, which is aligned according to the
	# "align" parameter. Can have the values "x", "-x", "y", "-y", "z" or "-z".
	"primary-axis": "x",
	# The direction of the secondary axis, which gives the direction of the
	# original position from the primary axis. For a head-on collision,
	# this has no effect. Can take the same values as "primary-axis", but not
	# in the same direction (obviously).
	"secondary-axis": "y",

	# External differential tidal force.
	# Note: the main executable must be compiled with the relevant capability ("T" as last letter) otherwise it will not work!
	# Mass of the central body
	"cen-mass": None,
	# Distance of the central body
	"cen-dist": None,
	# Direction to the central body. Can have the values "x", "-x", "y", "-y", "z" or "-z".
	"cen-dir": None,
	# Axis of rotation around the central body. Can take the same values as "cen-dir", but not
	# in the same direction (obviously).
	"cen-rot": None,

	# Spin-orbit misalignment
	# Affects both bodies the same way. Only useful when pre-impact rotation is being used.
	# Reference direction for the rotation axis; takes the same possibilities as "align" key above.
	"rot-ref": None,
	# Angle from the reference direction for the rotation axis in the orbital plane
	"rot-dir": None,
	# Rotation angle
	"rot-angle": None,

	# Paramters for combination of impactor and target
	# The number by which to shift particles IDs in the impactor.
	# This has to be greater than the number of particles in the target.
	"shift-id": 2000000,
	# Additional variables to set (optional)
	"variables": {},
	# Additional attributes to set (optional)
	# Other attributes and their default values are set by the executable; see app/sphlatch.cpp
	"attributes": {
		"hmin": 1.0e+5, # minimal smoothing length [cm]
		"umin": 1.0e+8, # minimal specific energy [erg/g]
		"rhomin": 1.0e-3, # minimal density [g/cm^3]
		"damage": 1., # fixed value of damage when using solid strength without damage growth
	},

	# Parameters for the main program
	# Path to program to use
	# This should one version of sphlatch/app
	"exec": "sphlatch_GCIEOUHUD_T",
	# Unit in which the following quantities are given. Possible values are:
	# - phys: Physical time
	# - grav: Gravitational time scale
	# - coll: Collision time scale
	"time-quant": "phys",
	# Time between dumps
	"time-save": 1. / 30.,
	# Time between dumps to retain once post-processing is finished
	# Allows to a high resolution for post-processing (clump search, image and movie generation),
	# while only keeping a lower number of dumps for archival.
	"time-keep": None,
	# Time at which to stop
	# Warning: t = 0 is the time of the impact, not of the beginning
	"time-stop": 60.,
	# Prefix for dumps
	# May contain a path separtor to place dumps in a subdirectory,
	# in which case the subdirectory name should also be added to mkDirs
	"dump-prefix": "dumps/dump",
	# File to use to save result of clumps search
	# Can be False or None if it is not supported by the program
	"clumps-file": None, #"clumps.h5part"
	# File to use to save result of friends-of-friends search
	# Can be False or None if it is not supported by the program
	"fof-file": None, #"fof.h5part"
	# File to use to save result of gravity and friends-of-friends combination
	# Can be False or None if it is not supported by the program
	"combine-file": None, #"mix.hdf5"
	# File to use to save result of binning
	# Can be False or None if it is not supported by the program
	"bins-file": None, #"bins.hdf5"
	# Number of slots to request when running the program
	"slots": None,
	# Actual number of threads to use in the program
	# None means to use the same as "slots"
	"threads": None,
	# Additional parameters to be passed to the main integrator
	"parameters": [ "--update-link" ],
}

# Default parameters for postproc.py script
# These can be overridden with command line parameters when calling that script
postprocParams = {
	# Tasks to perform
	# Available types are:
	# - analyse: calling "postproc" program to perform friend-of-friend, gravity, and combined clump search, and related tasks
	# - select: calling "h5part_select" on each dump to set a flag according to certain properties
	# - part-images: Generating frames using scatter plots of SPH particles for each dump
	# - part-movies: Animating the frames generated by part-images
	# - grid-images: Generating frames using SPH kernel interpolation for each dump
	# - grid-movies: Animating the frames generated by grid-images
	# - report-images: Generating frames of for each dump
	# - report-movies: Animating the frames generated by report-images
	# - reports: Generating time evolution plots of reduced quantities
	# - cleanup: Reduce the amount of data in dumps by removing fields in dumps or dumps altogether (according to "time-keep" in mainParams)
	"types": [ "analyse", "part-images", "part-movies", "grid-images", "grid-movies", "reports", "cleanup" ],
	# Extra parameters to pass to the "postproc" script
	"analyse-params": [ "--threads", "1", "--energies", "--fof", "--fof-file", "{fof}", "--clumps", "--clumps-file", "{clumps}", "--frac-min-orbit", "0.1", "--combine", "--combine-file", "{combine}" ],
	# Parameters to pass to
	"select-params": [ "--orbit", "2" ],
	# Reference file to use to select from
	"select-file": "initial.h5part",
	# Coloring modes to generate in "part-images" task
	# Available modes are material, phase, clump, friend, mix, orbit, pressure, energy, density, densratio, temperature, and entropy
	"part-colors": [ "material", "phase", "clump", "friend", "entropy", "temperature" ],
	# Scales to generate in "part-images" task
	# Items listed here *must* also be defined in scatterplotParams
	"part-scales": [ "large", "middle", "small", "target" ],
	# Additional parameters to pass to plotting script
	"part-params": [],
	# Coloring modes to generate in "grid-images" task
	# Available modes are pressure, energy, density, temperature
	"grid-colors": [ "density", "temperature" ],
	# Scales to generate in "grid-images" task
	# Items listed here *must* also be defined in scatterplotParams
	"grid-scales": [ "middle_grid", "small_grid", "target_grid" ],
	# Additional parameters to pass to plotting script
	"grid-params": [],
	# File format for movies
	"movie-ext": "mp4",
	# Only generate images for dumps saved at regular time intervals (i.e. following "time-save" in mainParams)
	"only-regular": True,
	# Fields to remove from dumps to keep
	# None or False disables this altogether, while an empty array removes the fields needed for restart only
	"remove-fields": [ "ST" ],
	# Data to plot in "reports" task
	# Available modes are satellite_mass, bound_mass, bound_momentum, cb_mass, cb_momentum,
	# imp_mass, imp_momentum, disk_mass disk_momentum, esc_mass esc_momentum,
	# bound_kinetic_energy, bound_rotational_energy, cb_rotational_energy,
	# bound_internal_energy, bound_potential_energy and cb_potential_energy
	"reports": [ "satellite_mass", "bound_momentum", "disk_mass", "disk_momentum" ],
	# Data plots to animate in "report-images" and "report-movies" tasks
	# Available modes are bound_mass_bins, bound_density_bins, bound_momentum_bins,
	# cb_mass_bins, cb_density_bins, cb_momentum_bins, imp_mass_bins, imp_density_bins, imp_momentum_bins,
	# disk_mass_bins, disk_density_bins, disk_momentum_bins, esc_mass_bins, esc_density_bins and esc_momentum_bins
	"report-movies": [ "disk_mass_bins", "disk_momentum_bins" ],
	# Additional parameters to pass to report script
	"report-params": [ "--title", "Run {name}" ],
	# The following are the same as as in mainParams, except they predominate in the postrocessing.
	# If they are None, they will be taken from mainParams instead
	# This is useful if analysis is performed during the postprocessing only, in which case the ones in mainParams are to be set to None.
	"clumps-file": "clumps.h5part",
	"fof-file": "fof.h5part",
	"combine-file": "mix.h5part",
	"bins-file": None,
}

# Default parameters for scatterplot.py script
scatterplotParams = {
	# All scales that are available
	# The scale can be defined either by:
	# - hmin, hmax, vmin, vmax: lower and upper boundaries of the horizontal and vertical axes respectively
	# - hsize, vsize, len: unit size of horizontal and vertical axes, and length per unit size.
	"scales": {
		"large":       { "hsize": 2, "vsize": 2, "len": 5.0e09, "psize": 5., "zmin": None, "zmax": None },
		"middle":      { "hsize": 2, "vsize": 2, "len": 1.0e09, "psize": 5., "zmin": None, "zmax": None },
		"middle_grid": { "hsize": 2, "vsize": 2, "len": 1.0e09 },
		"small":       { "hsize": 2, "vsize": 2, "len": 5.0e08, "center_clump": 1, "psize": 10. },
		"small_grid":  { "hsize": 2, "vsize": 2, "len": 5.0e08, "center_clump": 1 },
		"target":      { "hsize": 2, "vsize": 2, "len": 1.0e08, "center_clump": 1, "psize": 12. },
		"target_grid": { "hsize": 2, "vsize": 2, "len": 1.0e08, "center_clump": 1 },
	},

	# *All* of the following parameters may also be defined per scale if needed.
	# Some of them also have related command-line argument. Specifying a value
	# on the command line will override the global one (that is the ones below)
	# but *not* scale-specific values.

	# Display options:
	# Legends to appear on the top left
	# Available keys are:
	# - name: the value of simName
	# - timeval: current time (floating point number)
	# - timeunit: unit used for time (string)
	# - step: step number (integer)
	"legends": [
		"Run {name}",
		"t={timeval:.2f}{timeunit}",
	],
	# Additional target properties to display (same format as "legends")
	"props-tar": None,
	# Additional impactor properties to display (same format as "legends")
	"props-imp": None,
	# Whether to show collision parameters on the top right
	# Can also take "left" to put the parameter on the left column
	"showCollisionParams": False,
	# Whether to show offset from origin to plot center on the top right
	"showOffset": True,
	# Whether to show the scale on the bottom right
	"showScale": True,
	# Whether to show dashed line on axes zero
	"showAxes": True,
	# Whether to show central body parameters in case differential tidal force is enabled
	"showTidal": True,
	# Whether to show yellow and green circles for the clumps
	"showClumps": True,
	# Track the given particle (mostly used for debugging).
	# Plot will be centered on the particles and only particles within 2*h will be shown
	"track_part": None,
	# Center the plot on the given particle
	"center_part": None,
	# Center the plot on the given clump
	"center_clump": None,
	# Plot arrows for velocity and acceleration of each particle
	# Not recommended without specifying track_part as well, as it will make the plot unreadable otherwise
	"arrows": False,
	# Axis to display horizontally
	# Possible values are "x", "y", "z", "-x", "-y", "-z"
	"haxis": "x",
	# Axis to display vertically
	# Can take the same values as "haxis", but not the exact same one or its inverted counterpart
	"vaxis": "y",
	# Rotation angle in degrees (or None for no rotation)
	"rotation": None,
	# Pixels per unit size
	"res": 500,
	# Diameter of each point in pixel (default is a surface of 20 pixels, equivalent to a value around 5)
	"psize": None,
	# Ratio of particle's smoothing length to point radius.
	# Overrides "psize" if set, disabled if None
	"psizehratio": None,
	# Maximum number of ticks to show on the color bar scale
	"cbar-nticks": 5,
	# Background color, can be any colour matplotlib accepts
	"backcolor": "black",
	# Color for text and other related items, can be any colour matplotlib accepts
	"frontcolor": "white",
	# Order on which to display the different particles.
	# Each entry correspond to a set of particles to put at given depth
	# Keys are:
	# - conds: Conditions, the first level is ORed and the second is ANDed.
	#   Available keys are material, select, phase, clump, friend, orbit
	# - zorder: Depth at which to print the corresponding particle.
	#   Higher values will be printed in front of the lower ones
	"zorder": [
		{ "conds": [ { "select": 1 } ], "zorder": 3 },
		{ "conds": [ { "select": 0 } ], "zorder": 2 },
	],
	# Selection parameters:
	# Keep particles if they fulfill any condition instead of all of them
	"or_conds": False,
	# Material numbers
	"material": None,
	# Orbit number
	"orbit": None,
	# Selection value
	"select": None,
	# Slice selection; applied *after centering*
	# Minimal value for x
	"xmin": None,
	# Maximal value for x
	"xmax": None,
	# Minimal value for y
	"ymin": None,
	# Maximal value for y
	"ymax": None,
	# Minimal value for z
	"zmin": -0.5e8,
	# Maximal value for z
	"zmax": +0.5e8,
	# Scale parameters:
	# Lower boundary of the pressure scale (in native unit)
	"min_p": 1.,
	# Upper boundary of the pressure scale (in native unit)
	"max_p": 1.e15,
	# Lower boundary of the density scale (in native unit)
	"min_rho": 1.e-3,
	# Upper boundary of the density scale (in native unit)
	"max_rho": 1.e2,
	# Whether to use a logarithmic scale for density
	"log_rho": True,
	# Lower boundary of the density ratio scale
	"min_rr": 0.,
	# Upper boundary of the density ratio scale
	"max_rr": 2.,
	# Whether to use a logarithmic scale for density ratio
	"log_rr": False,
	# Lower boundary of the specific entropy scale (erg/g/K)
	"min_s": 1.e7,
	# Lower boundary of the specific entropy scale (erg/g/K)
	"max_s": 3.e8,
	# Whether to use a logarithmic scale for specific entropy
	"log_s": True,
	# Lower boundary of the temperature scale (in kelvin)
	"min_t": 1.e2,
	# Upper boundary of the temperature scale (in kelvin)
	"max_t": 2.e3,
	# Whether to use a logarithmic scale for temperature
	"log_t": True,
	# Lower boundary of the energy scale (in native unit)
	"min_u": 1.e8,
	# Upper boundary of the energy scale (in native unit)
	"max_u": 1.e13,
	# Whether to use a logarithmic scale for energy
	"log_u": True,
}

# Default parameters for plotprofile.py script
plotprofileParams = {
	# Datasets available for ploting. The key is the name of the dataset in the HDF5 files.
	# The value is a dictionary with th following keys:
	# - variable: Variable to show on the figure
	# - type: unit type, corresponding to entries in definitions.py
	# - name: Name of the quantity
	# - force-limits: Tuple of two values to use as limits for the corresponding plot
	# - force-scale: Scale to use, e.g. "log" for a logarithmic
	"datasets": {
		"r": { "variable": "r", "type": "dist", "name": "Radius" },
		"m": { "variable": "M", "type": "mass", "name": "Mass" },
		"p": { "variable": "p", "type": "pres", "name": "Pressure" },
		"rho": { "variable": "\\rho", "type": "dens", "name": "Density" },
		"S": { "variable": "S", "type": "specentr", "name": "Entropy" },
		"T": { "variable": "T", "type": "temp", "name": "Temperature" },
		"u": { "variable": "u", "type": "specener", "name": "Internal energy" },
		"vel": { "variable": "v", "type": "vel", "name": "Velocity" }
	},
	# Panels to plot. Each entry is a tuple containing 2 or 3 items.
	# The first is the quantity to show on the horizontal axis (one of the keys of the "datasets" dict above)
	# The second is the quantity to show on the vertical axis (same)
	# The last one is optional, and holds the title of the panel
	"plots": [
		( "r", "rho", "Density" ),
		( "r", "p", "Pressure" ),
		( "r", "T", "Temperature" ),
	],
	# dict() of preconfigured items to plot. When this is set, a new option --what
	# is available to select which of these to plot.
	# Each entry is another dict() with the following keys:
	# - bodies: list() of list(); first level is for each body to plot (to allow compare bodies)
	#   second level contains three keys; first is path to the profile file, the second to the particles
	#   file and the last one the corresponding description
	# - subplots: dict() of dict(); overrides of "plots" key above
	#   (e.g. to use the "force-limits" key for some variables)
	#   The first key is the corresponding "dataset" to override; the second is the item to override in "plots"
	"items": None,
	# According to what color particles. Possible values are:
	# - material: Material, body and selection
	# - phase: ANEOS phase number
	"color": "material",
	# Background color, can be any colour matplotlib accepts
	"backcolor": "white",
	# Color for text and other related items, can be any colour matplotlib accepts
	"frontcolor": "black",
}

# Path to other executable programs
# They can be found in sphlatch/tools/h5part_tools
locExec = {
	# Common command to start executable. Format is a list of strings, where a single parameter, "name", is the name of the executable.
	# Example: [ "singularity", "run", "/path/to/container.simg", "/path/to/code/{name}" ]
	# Will also apply to programs defined elsewhere (in profileImp, profilTar and mainParams)
	"cmd": None,
	# Common base path to all the program
	# Will also apply to programs defined elsewhere (in profileImp, profilTar and mainParams)
	"path": "/sphlatch/bin",
	# Add a rigid body rotation
	"rotate": "h5part_rotate",
	# Displace a body
	"displace": "h5part_displace",
	# Combine multiple objects into a single one
	"combine": "h5part_combine",
	# Combine multiple postprocessing summaries into a single one
	"pp_merge": "h5part_pp_merge",
	# Read attributes from dump files
	"readattr": "h5part_readattr",
	# Add a new dataset "select" depending on particle characteristics
	"select": "h5part_select",
	# Remove fields from a dump
	"remove_fields": "h5part_remove_fields",
	# Read object parameters
	"read": "read_sphere",
	# Separate postprocessing
	"postproc": "postproc",
	# SPH kernel interpolation
	"h5part2grid": "h5part2grid",
}

# Path to other scripts (the ones in sphlatch/tools/collision)
locScripts = {
	# Base path to all the scripts
	"path": "/sphlatch/tools/collision",
	# Additional color maps
	"colormap": "colormap.py",
	# File in which definitions for various items are saved
	"definitions": "definitions.py",
	# Write 1D profiles
	"writeprofile": "writeprofile.py",
	# Plot profile for both 1D and particles profiles
	"plotprofile": "plotprofile.py",
	# Simulation postprocessing
	"postprocess": "postproc.py",
	# Making images from simulation dumps
	"scatterplot": "scatterplot.py",
	# Report generation
	"report": "report.py",
}

# How to start the postprocessing script at the end of the setup
# "master": start it on the master; setup.py will not exit but pass the control to it instead
# "slave": start it as a job
# any other value: no automatic postprocessing
postprocType = "master"

# Command to make movies from images
# Two parameters are available:
# -input: a pattern for input images
# -output: output file
movieCmd = [
	"ffmpeg",
	#"-r", "12",
	"-i", "{input}",
	"-pix_fmt", "yuv420p",
	"-crf", "18",
	"-y", "{output}",
]

# Asynchronous parallel job submission command
jobParallelCmd = None
# For SGE:
#[
#	"qsub",
#	"-N", "{name}",
#	"-pe", "smp", "{slots}",
#	"-cwd",
#	"-notify",
#	"-q", "all.q",
#	"-R", "yes",
#	"-b", "yes"
#]

# Asynchronous serial job submission command
jobSerialCmd = None
# For SGE:
#[
#	"qsub",
#	"-N", "{name}",
#	"-cwd",
#	"-notify",
#	"-q", "all.q",
#	"-R", "yes",
#	"-b", "yes"
#]

# Job status command
jobStatCmd = None
# For SGE
#[
#	"qstat",
#	"-j", "{name}"
#]

# Additional files to link into the simulation directory
linkFiles = {
	"aneos_tables.hdf5": "/home/u26/adeened/sphlatch/aneos_tables.hdf5",
	"aneos_melt.hdf5": "/home/u26/adeened/sphlatch/aneos_melt.hdf5",
	"param": "/home/u26/adeened/sphlatch/param"
}

# Additional directories to create into the simulation directory
mkDirs = [
	"dumps"
]
